home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 3: Developer Tools / Linux Cubed Series 3 - Developer Tools.iso / devel / lang / pascal / gpc1.1p2 / gpc1 / usr / src / gpc-1.1p2-2.6.3 / PROBLEMS < prev    next >
Encoding:
Text File  |  1995-04-20  |  3.9 KB  |  111 lines

  1.  
  2. Last modified: Sat Mar 25 21:13:27 1995
  3. By: Juki <jtv@hut.fi>
  4.  
  5. The GPC compiler does not yet implement the whole ISO 7185 Pascal
  6. standard, so please take this into account when you consider
  7. using this for any purpose.
  8.  
  9. See the file version.c to find out the version number of this GPC
  10. (or run gpc -v)
  11.  
  12. Problems in this GPC version:
  13.  
  14.     - High optimization levels do not work properly on the Alpha.
  15.       Some conformance tests FAIL when compiled with -O6 flag,
  16.       which means that the compiler generates invalid code. Don't
  17.       use this flag in the alpha before the problem gets fixed.
  18.       It might have something to do with automatic inlining, but
  19.       I have not yet looked at this. -O flag should be ok.
  20.       (Also take care when using explicit inline functions)
  21.  
  22.     - Functions returning string schema types do not work
  23.       (they are called about three times where they should be called
  24.        once)
  25.  
  26.     - For some reason the pascal main program does not get lineno
  27.       stabs -> It is hard to debug it with gdb...
  28.  
  29.     - The modules export everything, not just the stuff in the
  30.       export interfaces. However, the unexported variables and functions
  31.       are invisible to modules in other files.
  32.  
  33.     - type checking is mostly what C does, not what Pascal requires,
  34.       so GPC does not yet implement a strongly typed language.
  35.       Although correct programs compile, incorrect ones compile also.
  36.  
  37.     - run time errors are not checked.
  38.  
  39.     - the inline set operations have some problems
  40.       with operations on two sets if the sets do not contain
  41.       equally many segments.
  42.  
  43.       In addition, the set code generated in the alpha causes
  44.       runtime runtime errors in the generated code.
  45.  
  46.     - No GPC texinfo file exists yet. See GPC.GUIDE instead.
  47.  
  48.     - Conformant arrays don't yet work (in general).
  49.       Until they do, this is a LEVEL-0 compiler.
  50.  
  51. Inconveniences:
  52.  
  53.     - NEW & DISPOSE optional tag field arguments are ignored
  54.       (warning given, code works)
  55.  
  56.     - GDB does not yet understand pascal sets, files or subranges.
  57.       Now GDB allows you to debug these things, even though it does
  58.       not yet understand some stabs.
  59.  
  60.     - PACKED does not pack. (implementation dependent,
  61.       warning given, code works)
  62.  
  63.     - Files of integer subranges that would fit in a byte do not;
  64.       instead they are handled as files of integer.
  65.       This is especially annoying with "file of 0..255".
  66.  
  67. Note for debugging:
  68.  
  69.     - Forward referencing pointers generate DBX style debugging
  70.       symbols by outputting the .stabs as an unknown pointer
  71.       and later it just outputs the same .stabs again, but this
  72.       time it also tells what type the pointer points to.
  73.       This seems to work for gdb. As of this writing I have
  74.       not checked what happens with SDB type debugging info.
  75.       It might be that the pointer is left to be a (void *)
  76.       pointer, so you have to cast it in order to output
  77.       the object the pointer points to.
  78.  
  79.       Also, I have not tried any other debugger than gdb.
  80.       If you do, please let me know what happens.
  81.  
  82.       I think that GDB does not yet support the kind of .stabs
  83.       that should be used to do this correctly:
  84.         .stabs ":t<anumber>=<bnumber>", <whatever>
  85.       where ANUMBER is the unknown pointer type referenced
  86.       earlier, and the BNUMBER is the type which ANUMBER
  87.       actually is. This construct is not required in C.
  88.  
  89.     - When debugging, please note that the Initial Letter
  90.       In Each Identifier Is In Upper Case And The Rest
  91.       Are In Lower Case. If  you wish to call C-routines
  92.       declare them with the "C" directive, as follows:
  93.  
  94.         procedure FooBAR(i:integer);c;
  95.  
  96.       This makes the external name to be "_foobar"
  97.       (replace "_" with you machine prefix.)
  98.  
  99.         Procedure FooBAR(i:Integer); External;
  100.  
  101.       Uses external name "_Foobar".
  102.  
  103.       It is done like this to reduce name clashes    
  104.       with libc.a and other possible libraries.
  105.  
  106.       All visible GPC runtime system library routines are
  107.       named "_p_....".
  108.  
  109.       However, the main program name is not capitalized.
  110.       (this is a kludge -> it may now clash with libc
  111.        identifiers. I'll change this somehow later)